# 第07节:部署环境 Elasticsearch、Kibana

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、运维日志

  • canal 是一款 阿里巴巴 MySQL binlog 增量订阅&消费组件,模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议。MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal ),canal 解析 binary log 对象(原始为 byte 流),之后把数据转存到其他需要保存的服务中。文档:https://github.com/alibaba/canal/wiki (opens new window)
  • 本章节我们会在 docker 环境,把 Mysql 数据库中抽奖系统的分库分表数据使用 canal 同步到 ES 文件系统中

# 二、环境要求

canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费

应用 端口 版本
Mysql 3306 5.7
ElasticSearch 9200 7.6.2
Kibana 5601 7.6.2
canal.deployer 11111 1.1.15
canal.adapter 8081 1.1.15
canal.admin 8089 1.1.15
  • Mysql、ElasticSearch、Kibana,在 Docker 环境已经安装完成,如果尚未安装或者版本不符合可以按照前面章节内容重新安装(PS:版本不匹可能没法同步数据)。
  • canal 组件包括:canal.deployer、canal.adapter、canal.admin,本地地址(已做相应的排坑处理):https://gitcode.net/KnowledgePlanet/canal (opens new window)、官网地址(如果有一些个性需求可以下载官网组件):https://github.com/alibaba/canal/releases/tag/canal-1.1.5 (opens new window)
    • canal.deployer:可以直接监听MySQL的binlog,把自己伪装成MySQL的从库,只负责接收数据,并不做处理。
    • canal.adapter:相当于canal的客户端,会从canal-server中获取数据,然后对数据进行同步,可以同步到MySQL、Elasticsearch和HBase等存储中去。
    • canal.admin:为canal提供整体配置管理、节点运维等面向运维的功能,提供相对友好的WebUI操作界面,方便更多用户快速和安全的操作。

# 三、Mysql 配置

配置:对 Mysql 数据库开启 binlog 写入功能,并设置 binlog-format = ROW 同时需要创建一个只读权限的账号,用于订阅 binlog

# 1. 查看 binlog 是否启用

注意:你可以在 Docker 中使用 docker exec -it [容器ID/容器名称(mysql)] /bin/bash 进入容器后,使用 mysql -u root -p 进入 mysql 后执行命令查看,也可以通过 mysql 可视化工具直接链接后输入查询命令的方式进行查看

命令SHOW VARIABLES LIKE '%log_bin%';

已开启 binlog 未开启 binlog
  • 如果你的 Mysql 是未开启 binlog 的,那么需要执行下面的步骤进行开启,否则不能使用 canal 订阅 binlog